package pkg

import "go.uber.org/zap"

//体温数据清洗

func CleanTemperature(rawTemp float32) (float32, bool) {
	// 检查体温是否为空值（这里以0.0作为空值标识，可根据实际数据格式调整）
	if rawTemp == 0.0 {
		Warn("检测到空体温值，不进行保存",
			zap.Float32("raw_temp", rawTemp), // 记录空值的原始值
		)
		return 0.0, false
	}
	// 人体正常体温范围（摄氏度），可根据实际需求调整
	minValidTemp := 35.0
	maxValidTemp := 42.0
	// 转换为float64便于比较
	temp := float64(rawTemp)
	// 检查是否在合理范围内
	if temp >= minValidTemp && temp <= maxValidTemp {
		return rawTemp, true
	}
	// 超出范围的处理逻辑
	Warn("检测到异常体温值: %.1f°C（超出正常范围 35.0-42°C），已进行清洗处理", zap.Float32("raw_temp", rawTemp))
	return 0.0, false
}

//心跳数据清洗

func CleanOximeter(rawPR int) (int, bool) {
	// 1. 空值校验（设备未检测到的标记）
	if rawPR == 0 {
		Warn("检测到空值，跳过处理",
			zap.Int("raw_pr", rawPR),
		)
		return 0, false
	}

	// 2. 脉率范围校验（60~100次/分钟，可选扩展）
	minPR, maxPR := 60, 100
	if rawPR < minPR || rawPR > maxPR {
		Warn("脉率超出合理范围",
			zap.Int("raw_pr", rawPR),
			zap.Int("min", minPR),
			zap.Int("max", maxPR),
		)
		return 0, false
	}

	return rawPR, true // 有效数据
}

//血糖数据清洗

func CleanGlucose(rawGlucose float32) (float32, bool) {
	// 1. 空值校验（设备未检测到的标记）
	if rawGlucose == 0.0 {
		Warn("检测到空血糖值，跳过处理",
			zap.Float32("raw_glucose", rawGlucose),
		)
		return 0.0, false
	}

	// 2. 合理范围校验（空腹血糖：3.9~6.1 mmol/L，可动态调整）
	minValid := 3.9 // 最低合理值（如婴儿/餐后需调整）
	maxValid := 6.1 // 最高合理值
	temp := float64(rawGlucose)

	if temp >= minValid && temp <= maxValid {
		return rawGlucose, true // 有效数据
	}

	// 3. 异常值处理
	Warn("血糖值超出合理范围",
		zap.Float32("raw_glucose", rawGlucose),
		zap.Float64("min_valid", minValid),
		zap.Float64("max_valid", maxValid),
	)
	return 0.0, false
}
